<?php

require_once 'UserDAL.php';

class LoginHandler{
	
	//private $m_sessionLocation ="peter";
	private $m_sessionLocation ="sss";
	private $c_username ="peter";
	private $c_password ="php";
	private $w_username ="toni";
	private $w_password ="asp";
	private $userName ="userName";
	

	private $db;
	private $userdal;
	
	public function __construct(Database $db){
		$this->db = $db;
		$this->userdal = new UserDAL($db);
		
 	}
		
	public function IsLoggedIn(){
		//Öppnar en session
		if (isset ($_SESSION[$this->m_sessionLocation]) == true ){
			return TRUE;
		}
		return false;
	}
	
	public function DoLogin($username, $password){
	
			$user = $this->userdal->SelectOneUserByUsernameAndPassword($username, $password);

			if(count($user) > 0){
				$_SESSION[$this->m_sessionLocation] = true;
				$_SESSION[$this->userName] = $username;
				return true;
			}
			return false;
	}
	
	public function DoLogout(){
		//Öppnar och stänger en session
		if (isset ($_SESSION[$this->m_sessionLocation]))
			unset ($_SESSION[$this->m_sessionLocation]);
			unset ($_SESSION[$this->userName]);
	}
	
	public function GetLoggedInUserName() {
			return $_SESSION[$this->userName];
		}
	
	public function test(){
		
		//Börjar med att anropa DoLogout.
		$this->DoLogout();
		
		//Undersöker ifall man är inloggad.
		if($this->IsLoggedIn() == true )
		{
			echo "Något gick fel i IsLoggedIn";
			return false;
		}
		
		//Kollar ifall användarnamn och lösen är fel.
		if($this->DoLogin($this->w_username, $this->w_password) == true )
		{
			echo"fel användarnamn och lösenord";
			return false;			
		}
		
		if($this->IsLoggedIn() == true )
		{
			echo "Något gick fel i IsLoggedIn";
			return false;
		}	
		
		//Kolla om lösen och användarnamn stämmer?
		if($this->DoLogin($this->c_username, $this->c_password) == false )
		{
			echo"rätt grejer";
			return false;			
		}
		
		//Kollar därefter om man då är inloggad.
		if($this->IsLoggedIn() == false)
		{
			echo "Något gick fel i IsLoggedIn";
			return false;
		}	
		
		//Tar fram DoLogout igen.
		$this->DoLogout();
		
		if($this->IsLoggedIn() == true )
		{
			echo "Något gick fel i IsLoggedIn";
			return false;
		}
		
		//Kollar rätt användarnam med fel lösenord.
		if($this->DoLogin($this->c_username, $this->w_password) == true )
		{
			echo"fel lösenord";
			return false;			
		}	
		echo "Testerna av inloggnigen lyckades <br>";
		//När alla tester har gått igenom kommer man hit.
		return true;		
	}
}